#pragma once

template <typename T>
class IdGenerator
{
public:
    IdGenerator() {}

    IdGenerator(T initialValue)
        : next_(initialValue) {}

    T operator()() {
        return next_++;
    }

private:
    T next_ = 0;
};
